package com.agri.service;

import com.agri.dto.ProductQueryDTO;
import com.agri.entity.FinancingProduct;
import com.agri.result.Result;

/**
 * 融资产品服务接口
 * 定义融资产品的CRUD操作和推荐逻辑
 *
 * @author Agri-Fin-Sale Team
 * @since 2025-11-05
 */
public interface FinancingProductService {
    /**
     * 创建融资产品
     */
    Result<?> createProduct(FinancingProduct product);

    /**
     * 更新融资产品
     */
    Result<?> updateProduct(FinancingProduct product);

    /**
     * 删除融资产品
     */
    Result<?> deleteProduct(Long id);

    /**
     * 根据ID获取融资产品详情
     */
    Result<?> getProductById(Long id);

    /**
     * 查询融资产品列表
     * 支持按类型、状态等条件筛选
     */
    Result<?> listProducts(ProductQueryDTO queryDTO);

    /**
     * 推荐融资产品
     * 根据用户信息和需求推荐合适的融资产品
     */
    Result<?> recommendProducts(Long userId, String cropType, Double loanAmount);

    /**
     * 更新产品状态
     */
    Result<?> updateProductStatus(Long id, Integer status);
}